import Dbconfg from '../conf/Dbconfg'
import mysql, { Connection } from 'mysql'
class BaseDao {
  // 所有Dao的通用Dao 🔪
  static baseDao: BaseDao = new BaseDao()
  con!: Connection
  constructor() {
    this.connect()
  }
  //   建立连接
  async connect() {
    this.con = await mysql.createConnection(Dbconfg.getConf())
  }
  //   通用查询
  async query<T>(sql: string) {
    // 注意：查询要放到异步当中
    // 如果不用泛型 那么返回的是 Promise<unknown> 上层就不知道返回的是什么 所以需要用到泛型
    return new Promise<T>((resolve, reject) => {
      // this.con.query 是同步的所有需要 new Promise
      this.con.query(sql, (err: any, result: T) => {
        if (err) {
          reject(err)
        } else {
          resolve(result)
        }
      })
    })
  }
}

export default BaseDao.baseDao
